#ifndef TEST_PY_RATING_HEAVY_NODE_PENALTY_POLICY_H
#define TEST_PY_RATING_HEAVY_NODE_PENALTY_POLICY_H
#include "policy_base.h"
#include "macros.h"
#include "typedef.h"

//顶点对打分惩罚策略
namespace mcgpp{
  //点权作为惩罚
  class MultiplicativePenalty final : public meta::PolicyBase {
  public:
    MCGPP_ATTRIBUTE_ALWAYS_INLINE static inline RatingType penalty(const WeightType weight_u, const WeightType weight_v) {
      return weight_u * weight_v;
    }
  };

  class NoWeightPenalty final : public meta::PolicyBase {
  public:
    MCGPP_ATTRIBUTE_ALWAYS_INLINE static inline RatingType penalty(const WeightType, const WeightType) {
      return 1;
    }
  };
}
#endif //TEST_PY_RATING_HEAVY_NODE_PENALTY_POLICY_H
